home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / mozilla-firefox / include / xpcom / nsIFile.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  35KB  |  827 lines

  1. /*
  2.  * DO NOT EDIT.  THIS FILE IS GENERATED FROM nsIFile.idl
  3.  */
  4.  
  5. #ifndef __gen_nsIFile_h__
  6. #define __gen_nsIFile_h__
  7.  
  8.  
  9. #ifndef __gen_nsISupports_h__
  10. #include "nsISupports.h"
  11. #endif
  12.  
  13. /* For IDL files that don't want to include root IDL files. */
  14. #ifndef NS_NO_VTABLE
  15. #define NS_NO_VTABLE
  16. #endif
  17. class nsISimpleEnumerator; /* forward declaration */
  18.  
  19.  
  20. /* starting interface:    nsIFile */
  21. #define NS_IFILE_IID_STR "c8c0a080-0868-11d3-915f-d9d889d48e3c"
  22.  
  23. #define NS_IFILE_IID \
  24.   {0xc8c0a080, 0x0868, 0x11d3, \
  25.     { 0x91, 0x5f, 0xd9, 0xd8, 0x89, 0xd4, 0x8e, 0x3c }}
  26.  
  27. /**
  28.  * This is the only correct cross-platform way to specify a file.
  29.  * Strings are not such a way. If you grew up on windows or unix, you
  30.  * may think they are.  Welcome to reality.
  31.  *
  32.  * All methods with string parameters have two forms.  The preferred
  33.  * form operates on UCS-2 encoded characters strings.  An alternate
  34.  * form operates on characters strings encoded in the "native" charset.
  35.  *
  36.  * A string containing characters encoded in the native charset cannot
  37.  * be safely passed to javascript via xpconnect.  Therefore, the "native
  38.  * methods" are not scriptable. 
  39.  *
  40.  * @status FROZEN
  41.  */
  42. class NS_NO_VTABLE nsIFile : public nsISupports {
  43.  public: 
  44.  
  45.   NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFILE_IID)
  46.  
  47.   /**
  48.      *  Create Types
  49.      *
  50.      *  NORMAL_FILE_TYPE - A normal file.
  51.      *  DIRECTORY_TYPE   - A directory/folder.
  52.      */
  53.   enum { NORMAL_FILE_TYPE = 0U };
  54.  
  55.   enum { DIRECTORY_TYPE = 1U };
  56.  
  57.   /**
  58.      *  append[Native]
  59.      *
  60.      *  This function is used for constructing a descendent of the
  61.      *  current nsIFile.
  62.      *
  63.      *   @param node
  64.      *       A string which is intended to be a child node of the nsIFile.
  65.      *       For the |appendNative| method, the node must be in the native
  66.      *       filesystem charset.
  67.      */
  68.   /* void append (in AString node); */
  69.   NS_IMETHOD Append(const nsAString & node) = 0;
  70.  
  71.   /* [noscript] void appendNative (in ACString node); */
  72.   NS_IMETHOD AppendNative(const nsACString & node) = 0;
  73.  
  74.   /**
  75.      *  Normalize the pathName (e.g. removing .. and . components on Unix).
  76.      */
  77.   /* void normalize (); */
  78.   NS_IMETHOD Normalize(void) = 0;
  79.  
  80.   /**
  81.      *  create
  82.      *
  83.      *  This function will create a new file or directory in the
  84.      *  file system. Any nodes that have not been created or
  85.      *  resolved, will be.  If the file or directory already
  86.      *  exists create() will return NS_ERROR_FILE_ALREADY_EXISTS.
  87.      *
  88.      *   @param type
  89.      *       This specifies the type of file system object
  90.      *       to be made.  The only two types at this time
  91.      *       are file and directory which are defined above.
  92.      *       If the type is unrecongnized, we will return an
  93.      *       error (NS_ERROR_FILE_UNKNOWN_TYPE).
  94.      *
  95.      *   @param permissions
  96.      *       The unix style octal permissions.  This may
  97.      *       be ignored on systems that do not need to do
  98.      *       permissions.
  99.      */
  100.   /* void create (in unsigned long type, in unsigned long permissions); */
  101.   NS_IMETHOD Create(PRUint32 type, PRUint32 permissions) = 0;
  102.  
  103.   /**
  104.      *  Accessor to the leaf name of the file itself.      
  105.      *  For the |nativeLeafName| method, the nativeLeafName must 
  106.      *  be in the native filesystem charset.
  107.      */
  108.   /* attribute AString leafName; */
  109.   NS_IMETHOD GetLeafName(nsAString & aLeafName) = 0;
  110.   NS_IMETHOD SetLeafName(const nsAString & aLeafName) = 0;
  111.  
  112.   /* [noscript] attribute ACString nativeLeafName; */
  113.   NS_IMETHOD GetNativeLeafName(nsACString & aNativeLeafName) = 0;
  114.   NS_IMETHOD SetNativeLeafName(const nsACString & aNativeLeafName) = 0;
  115.  
  116.   /**
  117.      *  copyTo[Native]
  118.      *
  119.      *  This will copy this file to the specified newParentDir.
  120.      *  If a newName is specified, the file will be renamed.
  121.      *  If 'this' is not created we will return an error
  122.      *  (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST).
  123.      *
  124.      *  copyTo may fail if the file already exists in the destination 
  125.      *  directory.
  126.      *
  127.      *  copyTo will NOT resolve aliases/shortcuts during the copy.
  128.      *
  129.      *   @param newParentDir
  130.      *       This param is the destination directory. If the
  131.      *       newParentDir is null, copyTo() will use the parent
  132.      *       directory of this file. If the newParentDir is not
  133.      *       empty and is not a directory, an error will be
  134.      *       returned (NS_ERROR_FILE_DESTINATION_NOT_DIR). For the 
  135.      *       |CopyToNative| method, the newName must be in the 
  136.      *       native filesystem charset.
  137.      *
  138.      *   @param newName
  139.      *       This param allows you to specify a new name for
  140.      *       the file to be copied. This param may be empty, in
  141.      *       which case the current leaf name will be used.
  142.      */
  143.   /* void copyTo (in nsIFile newParentDir, in AString newName); */
  144.   NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString & newName) = 0;
  145.  
  146.   /* [noscript] void CopyToNative (in nsIFile newParentDir, in ACString newName); */
  147.   NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString & newName) = 0;
  148.  
  149.   /**
  150.      *  copyToFollowingLinks[Native]
  151.      *
  152.      *  This function is identical to copyTo with the exception that,
  153.      *  as the name implies, it follows symbolic links.  The XP_UNIX
  154.      *  implementation always follow symbolic links when copying.  For 
  155.      *  the |CopyToFollowingLinks| method, the newName must be in the 
  156.      *  native filesystem charset.
  157.      */
  158.   /* void copyToFollowingLinks (in nsIFile newParentDir, in AString newName); */
  159.   NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString & newName) = 0;
  160.  
  161.   /* [noscript] void copyToFollowingLinksNative (in nsIFile newParentDir, in ACString newName); */
  162.   NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString & newName) = 0;
  163.  
  164.   /**
  165.      *  moveTo[Native]
  166.      *
  167.      *  A method to move this file or directory to newParentDir.
  168.      *  If a newName is specified, the file or directory will be renamed.
  169.      *  If 'this' is not created we will return an error
  170.      *  (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST).
  171.      *  If 'this' is a file, and the destination file already exists, moveTo
  172.      *  will replace the old file.
  173.      *
  174.      *  moveTo will NOT resolve aliases/shortcuts during the copy.
  175.      *  moveTo will do the right thing and allow copies across volumes.
  176.      *  moveTo will return an error (NS_ERROR_FILE_DIR_NOT_EMPTY) if 'this' is
  177.      *  a directory and the destination directory is not empty.
  178.      *  moveTo will return an error (NS_ERROR_FILE_ACCESS_DENIED) if 'this' is
  179.      *  a directory and the destination directory is not writable.
  180.      *
  181.      *   @param newParentDir
  182.      *       This param is the destination directory. If the
  183.      *       newParentDir is empty, moveTo() will rename the file
  184.      *       within its current directory. If the newParentDir is
  185.      *       not empty and does not name a directory, an error will
  186.      *       be returned (NS_ERROR_FILE_DESTINATION_NOT_DIR).  For 
  187.      *       the |moveToNative| method, the newName must be in the 
  188.      *       native filesystem charset.
  189.      *
  190.      *   @param newName
  191.      *       This param allows you to specify a new name for
  192.      *       the file to be moved. This param may be empty, in
  193.      *       which case the current leaf name will be used.
  194.      */
  195.   /* void moveTo (in nsIFile newParentDir, in AString newName); */
  196.   NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString & newName) = 0;
  197.  
  198.   /* [noscript] void moveToNative (in nsIFile newParentDir, in ACString newName); */
  199.   NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString & newName) = 0;
  200.  
  201.   /**
  202.      *  This will try to delete this file.  The 'recursive' flag
  203.      *  must be PR_TRUE to delete directories which are not empty.
  204.      *
  205.      *  This will not resolve any symlinks.
  206.      */
  207.   /* void remove (in boolean recursive); */
  208.   NS_IMETHOD Remove(PRBool recursive) = 0;
  209.  
  210.   /**
  211.      *  Attributes of nsIFile.
  212.      */
  213.   /* attribute unsigned long permissions; */
  214.   NS_IMETHOD GetPermissions(PRUint32 *aPermissions) = 0;
  215.   NS_IMETHOD SetPermissions(PRUint32 aPermissions) = 0;
  216.  
  217.   /* attribute unsigned long permissionsOfLink; */
  218.   NS_IMETHOD GetPermissionsOfLink(PRUint32 *aPermissionsOfLink) = 0;
  219.   NS_IMETHOD SetPermissionsOfLink(PRUint32 aPermissionsOfLink) = 0;
  220.  
  221.   /**
  222.      *  File Times are to be in milliseconds from
  223.      *  midnight (00:00:00), January 1, 1970 Greenwich Mean
  224.      *  Time (GMT).
  225.      */
  226.   /* attribute PRInt64 lastModifiedTime; */
  227.   NS_IMETHOD GetLastModifiedTime(PRInt64 *aLastModifiedTime) = 0;
  228.   NS_IMETHOD SetLastModifiedTime(PRInt64 aLastModifiedTime) = 0;
  229.  
  230.   /* attribute PRInt64 lastModifiedTimeOfLink; */
  231.   NS_IMETHOD GetLastModifiedTimeOfLink(PRInt64 *aLastModifiedTimeOfLink) = 0;
  232.   NS_IMETHOD SetLastModifiedTimeOfLink(PRInt64 aLastModifiedTimeOfLink) = 0;
  233.  
  234.   /**
  235.      *  WARNING!  On the Mac, getting/setting the file size with nsIFile
  236.      *  only deals with the size of the data fork.  If you need to
  237.      *  know the size of the combined data and resource forks use the
  238.      *  GetFileSizeWithResFork() method defined on nsILocalFileMac.
  239.      */
  240.   /* attribute PRInt64 fileSize; */
  241.   NS_IMETHOD GetFileSize(PRInt64 *aFileSize) = 0;
  242.   NS_IMETHOD SetFileSize(PRInt64 aFileSize) = 0;
  243.  
  244.   /* readonly attribute PRInt64 fileSizeOfLink; */
  245.   NS_IMETHOD GetFileSizeOfLink(PRInt64 *aFileSizeOfLink) = 0;
  246.  
  247.   /**
  248.      *  target & path
  249.      *
  250.      *  Accessor to the string path.  The native version of these
  251.      *  strings are not guaranteed to be a usable path to pass to
  252.      *  NSPR or the C stdlib.  There are problems that affect
  253.      *  platforms on which a path does not fully specify a file
  254.      *  because two volumes can have the same name (e.g., XP_MAC).
  255.      *  This is solved by holding "private", native data in the
  256.      *  nsIFile implementation.  This native data is lost when
  257.      *  you convert to a string.
  258.      *
  259.      *      DO NOT PASS TO USE WITH NSPR OR STDLIB!
  260.      *
  261.      *  target
  262.      *      Find out what the symlink points at.  Will give error
  263.      *      (NS_ERROR_FILE_INVALID_PATH) if not a symlink.
  264.      *
  265.      *  path
  266.      *      Find out what the nsIFile points at.
  267.      *
  268.      *  Note that the ACString attributes are returned in the 
  269.      *  native filesystem charset.
  270.      *
  271.      */
  272.   /* readonly attribute AString target; */
  273.   NS_IMETHOD GetTarget(nsAString & aTarget) = 0;
  274.  
  275.   /* [noscript] readonly attribute ACString nativeTarget; */
  276.   NS_IMETHOD GetNativeTarget(nsACString & aNativeTarget) = 0;
  277.  
  278.   /* readonly attribute AString path; */
  279.   NS_IMETHOD GetPath(nsAString & aPath) = 0;
  280.  
  281.   /* [noscript] readonly attribute ACString nativePath; */
  282.   NS_IMETHOD GetNativePath(nsACString & aNativePath) = 0;
  283.  
  284.   /* boolean exists (); */
  285.   NS_IMETHOD Exists(PRBool *_retval) = 0;
  286.  
  287.   /* boolean isWritable (); */
  288.   NS_IMETHOD IsWritable(PRBool *_retval) = 0;
  289.  
  290.   /* boolean isReadable (); */
  291.   NS_IMETHOD IsReadable(PRBool *_retval) = 0;
  292.  
  293.   /* boolean isExecutable (); */
  294.   NS_IMETHOD IsExecutable(PRBool *_retval) = 0;
  295.  
  296.   /* boolean isHidden (); */
  297.   NS_IMETHOD IsHidden(PRBool *_retval) = 0;
  298.  
  299.   /* boolean isDirectory (); */
  300.   NS_IMETHOD IsDirectory(PRBool *_retval) = 0;
  301.  
  302.   /* boolean isFile (); */
  303.   NS_IMETHOD IsFile(PRBool *_retval) = 0;
  304.  
  305.   /* boolean isSymlink (); */
  306.   NS_IMETHOD IsSymlink(PRBool *_retval) = 0;
  307.  
  308.   /**
  309.      * Not a regular file, not a directory, not a symlink.
  310.      */
  311.   /* boolean isSpecial (); */
  312.   NS_IMETHOD IsSpecial(PRBool *_retval) = 0;
  313.  
  314.   /**
  315.      *  createUnique
  316.      *  
  317.      *  This function will create a new file or directory in the
  318.      *  file system. Any nodes that have not been created or
  319.      *  resolved, will be.  If this file already exists, we try
  320.      *  variations on the leaf name "suggestedName" until we find
  321.      *  one that did not already exist.
  322.      *
  323.      *  If the search for nonexistent files takes too long
  324.      *  (thousands of the variants already exist), we give up and
  325.      *  return NS_ERROR_FILE_TOO_BIG.
  326.      *
  327.      *   @param type
  328.      *       This specifies the type of file system object
  329.      *       to be made.  The only two types at this time
  330.      *       are file and directory which are defined above.
  331.      *       If the type is unrecongnized, we will return an
  332.      *       error (NS_ERROR_FILE_UNKNOWN_TYPE).
  333.      *
  334.      *   @param permissions
  335.      *       The unix style octal permissions.  This may
  336.      *       be ignored on systems that do not need to do
  337.      *       permissions.
  338.      */
  339.   /* void createUnique (in unsigned long type, in unsigned long permissions); */
  340.   NS_IMETHOD CreateUnique(PRUint32 type, PRUint32 permissions) = 0;
  341.  
  342.   /**
  343.       * clone()
  344.       *
  345.       * This function will allocate and initialize a nsIFile object to the
  346.       * exact location of the |this| nsIFile.
  347.       *
  348.       *   @param file
  349.       *          A nsIFile which this object will be initialize
  350.       *          with.
  351.       *
  352.       */
  353.   /* nsIFile clone (); */
  354.   NS_IMETHOD Clone(nsIFile **_retval) = 0;
  355.  
  356.   /**
  357.      *  Will determine if the inFile equals this.
  358.      */
  359.   /* boolean equals (in nsIFile inFile); */
  360.   NS_IMETHOD Equals(nsIFile *inFile, PRBool *_retval) = 0;
  361.  
  362.   /**
  363.      *  Will determine if inFile is a descendant of this file
  364.      *  If |recur| is true, look in subdirectories too
  365.      */
  366.   /* boolean contains (in nsIFile inFile, in boolean recur); */
  367.   NS_IMETHOD Contains(nsIFile *inFile, PRBool recur, PRBool *_retval) = 0;
  368.  
  369.   /**
  370.      *  Parent will be null when this is at the top of the volume.
  371.      */
  372.   /* readonly attribute nsIFile parent; */
  373.   NS_IMETHOD GetParent(nsIFile * *aParent) = 0;
  374.  
  375.   /**
  376.      *  Returns an enumeration of the elements in a directory. Each
  377.      *  element in the enumeration is an nsIFile.
  378.      *
  379.      *   @return NS_ERROR_FILE_NOT_DIRECTORY if the current nsIFile does
  380.      *           not specify a directory.
  381.      */
  382.   /* readonly attribute nsISimpleEnumerator directoryEntries; */
  383.   NS_IMETHOD GetDirectoryEntries(nsISimpleEnumerator * *aDirectoryEntries) = 0;
  384.  
  385. };
  386.  
  387. /* Use this macro when declaring classes that implement this interface. */
  388. #define NS_DECL_NSIFILE \
  389.   NS_IMETHOD Append(const nsAString & node); \
  390.   NS_IMETHOD AppendNative(const nsACString & node); \
  391.   NS_IMETHOD Normalize(void); \
  392.   NS_IMETHOD Create(PRUint32 type, PRUint32 permissions); \
  393.   NS_IMETHOD GetLeafName(nsAString & aLeafName); \
  394.   NS_IMETHOD SetLeafName(const nsAString & aLeafName); \
  395.   NS_IMETHOD GetNativeLeafName(nsACString & aNativeLeafName); \
  396.   NS_IMETHOD SetNativeLeafName(const nsACString & aNativeLeafName); \
  397.   NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString & newName); \
  398.   NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString & newName); \
  399.   NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString & newName); \
  400.   NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString & newName); \
  401.   NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString & newName); \
  402.   NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString & newName); \
  403.   NS_IMETHOD Remove(PRBool recursive); \
  404.   NS_IMETHOD GetPermissions(PRUint32 *aPermissions); \
  405.   NS_IMETHOD SetPermissions(PRUint32 aPermissions); \
  406.   NS_IMETHOD GetPermissionsOfLink(PRUint32 *aPermissionsOfLink); \
  407.   NS_IMETHOD SetPermissionsOfLink(PRUint32 aPermissionsOfLink); \
  408.   NS_IMETHOD GetLastModifiedTime(PRInt64 *aLastModifiedTime); \
  409.   NS_IMETHOD SetLastModifiedTime(PRInt64 aLastModifiedTime); \
  410.   NS_IMETHOD GetLastModifiedTimeOfLink(PRInt64 *aLastModifiedTimeOfLink); \
  411.   NS_IMETHOD SetLastModifiedTimeOfLink(PRInt64 aLastModifiedTimeOfLink); \
  412.   NS_IMETHOD GetFileSize(PRInt64 *aFileSize); \
  413.   NS_IMETHOD SetFileSize(PRInt64 aFileSize); \
  414.   NS_IMETHOD GetFileSizeOfLink(PRInt64 *aFileSizeOfLink); \
  415.   NS_IMETHOD GetTarget(nsAString & aTarget); \
  416.   NS_IMETHOD GetNativeTarget(nsACString & aNativeTarget); \
  417.   NS_IMETHOD GetPath(nsAString & aPath); \
  418.   NS_IMETHOD GetNativePath(nsACString & aNativePath); \
  419.   NS_IMETHOD Exists(PRBool *_retval); \
  420.   NS_IMETHOD IsWritable(PRBool *_retval); \
  421.   NS_IMETHOD IsReadable(PRBool *_retval); \
  422.   NS_IMETHOD IsExecutable(PRBool *_retval); \
  423.   NS_IMETHOD IsHidden(PRBool *_retval); \
  424.   NS_IMETHOD IsDirectory(PRBool *_retval); \
  425.   NS_IMETHOD IsFile(PRBool *_retval); \
  426.   NS_IMETHOD IsSymlink(PRBool *_retval); \
  427.   NS_IMETHOD IsSpecial(PRBool *_retval); \
  428.   NS_IMETHOD CreateUnique(PRUint32 type, PRUint32 permissions); \
  429.   NS_IMETHOD Clone(nsIFile **_retval); \
  430.   NS_IMETHOD Equals(nsIFile *inFile, PRBool *_retval); \
  431.   NS_IMETHOD Contains(nsIFile *inFile, PRBool recur, PRBool *_retval); \
  432.   NS_IMETHOD GetParent(nsIFile * *aParent); \
  433.   NS_IMETHOD GetDirectoryEntries(nsISimpleEnumerator * *aDirectoryEntries); 
  434.  
  435. /* Use this macro to declare functions that forward the behavior of this interface to another object. */
  436. #define NS_FORWARD_NSIFILE(_to) \
  437.   NS_IMETHOD Append(const nsAString & node) { return _to Append(node); } \
  438.   NS_IMETHOD AppendNative(const nsACString & node) { return _to AppendNative(node); } \
  439.   NS_IMETHOD Normalize(void) { return _to Normalize(); } \
  440.   NS_IMETHOD Create(PRUint32 type, PRUint32 permissions) { return _to Create(type, permissions); } \
  441.   NS_IMETHOD GetLeafName(nsAString & aLeafName) { return _to GetLeafName(aLeafName); } \
  442.   NS_IMETHOD SetLeafName(const nsAString & aLeafName) { return _to SetLeafName(aLeafName); } \
  443.   NS_IMETHOD GetNativeLeafName(nsACString & aNativeLeafName) { return _to GetNativeLeafName(aNativeLeafName); } \
  444.   NS_IMETHOD SetNativeLeafName(const nsACString & aNativeLeafName) { return _to SetNativeLeafName(aNativeLeafName); } \
  445.   NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString & newName) { return _to CopyTo(newParentDir, newName); } \
  446.   NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString & newName) { return _to CopyToNative(newParentDir, newName); } \
  447.   NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString & newName) { return _to CopyToFollowingLinks(newParentDir, newName); } \
  448.   NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString & newName) { return _to CopyToFollowingLinksNative(newParentDir, newName); } \
  449.   NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString & newName) { return _to MoveTo(newParentDir, newName); } \
  450.   NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString & newName) { return _to MoveToNative(newParentDir, newName); } \
  451.   NS_IMETHOD Remove(PRBool recursive) { return _to Remove(recursive); } \
  452.   NS_IMETHOD GetPermissions(PRUint32 *aPermissions) { return _to GetPermissions(aPermissions); } \
  453.   NS_IMETHOD SetPermissions(PRUint32 aPermissions) { return _to SetPermissions(aPermissions); } \
  454.   NS_IMETHOD GetPermissionsOfLink(PRUint32 *aPermissionsOfLink) { return _to GetPermissionsOfLink(aPermissionsOfLink); } \
  455.   NS_IMETHOD SetPermissionsOfLink(PRUint32 aPermissionsOfLink) { return _to SetPermissionsOfLink(aPermissionsOfLink); } \
  456.   NS_IMETHOD GetLastModifiedTime(PRInt64 *aLastModifiedTime) { return _to GetLastModifiedTime(aLastModifiedTime); } \
  457.   NS_IMETHOD SetLastModifiedTime(PRInt64 aLastModifiedTime) { return _to SetLastModifiedTime(aLastModifiedTime); } \
  458.   NS_IMETHOD GetLastModifiedTimeOfLink(PRInt64 *aLastModifiedTimeOfLink) { return _to GetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  459.   NS_IMETHOD SetLastModifiedTimeOfLink(PRInt64 aLastModifiedTimeOfLink) { return _to SetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  460.   NS_IMETHOD GetFileSize(PRInt64 *aFileSize) { return _to GetFileSize(aFileSize); } \
  461.   NS_IMETHOD SetFileSize(PRInt64 aFileSize) { return _to SetFileSize(aFileSize); } \
  462.   NS_IMETHOD GetFileSizeOfLink(PRInt64 *aFileSizeOfLink) { return _to GetFileSizeOfLink(aFileSizeOfLink); } \
  463.   NS_IMETHOD GetTarget(nsAString & aTarget) { return _to GetTarget(aTarget); } \
  464.   NS_IMETHOD GetNativeTarget(nsACString & aNativeTarget) { return _to GetNativeTarget(aNativeTarget); } \
  465.   NS_IMETHOD GetPath(nsAString & aPath) { return _to GetPath(aPath); } \
  466.   NS_IMETHOD GetNativePath(nsACString & aNativePath) { return _to GetNativePath(aNativePath); } \
  467.   NS_IMETHOD Exists(PRBool *_retval) { return _to Exists(_retval); } \
  468.   NS_IMETHOD IsWritable(PRBool *_retval) { return _to IsWritable(_retval); } \
  469.   NS_IMETHOD IsReadable(PRBool *_retval) { return _to IsReadable(_retval); } \
  470.   NS_IMETHOD IsExecutable(PRBool *_retval) { return _to IsExecutable(_retval); } \
  471.   NS_IMETHOD IsHidden(PRBool *_retval) { return _to IsHidden(_retval); } \
  472.   NS_IMETHOD IsDirectory(PRBool *_retval) { return _to IsDirectory(_retval); } \
  473.   NS_IMETHOD IsFile(PRBool *_retval) { return _to IsFile(_retval); } \
  474.   NS_IMETHOD IsSymlink(PRBool *_retval) { return _to IsSymlink(_retval); } \
  475.   NS_IMETHOD IsSpecial(PRBool *_retval) { return _to IsSpecial(_retval); } \
  476.   NS_IMETHOD CreateUnique(PRUint32 type, PRUint32 permissions) { return _to CreateUnique(type, permissions); } \
  477.   NS_IMETHOD Clone(nsIFile **_retval) { return _to Clone(_retval); } \
  478.   NS_IMETHOD Equals(nsIFile *inFile, PRBool *_retval) { return _to Equals(inFile, _retval); } \
  479.   NS_IMETHOD Contains(nsIFile *inFile, PRBool recur, PRBool *_retval) { return _to Contains(inFile, recur, _retval); } \
  480.   NS_IMETHOD GetParent(nsIFile * *aParent) { return _to GetParent(aParent); } \
  481.   NS_IMETHOD GetDirectoryEntries(nsISimpleEnumerator * *aDirectoryEntries) { return _to GetDirectoryEntries(aDirectoryEntries); } 
  482.  
  483. /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
  484. #define NS_FORWARD_SAFE_NSIFILE(_to) \
  485.   NS_IMETHOD Append(const nsAString & node) { return !_to ? NS_ERROR_NULL_POINTER : _to->Append(node); } \
  486.   NS_IMETHOD AppendNative(const nsACString & node) { return !_to ? NS_ERROR_NULL_POINTER : _to->AppendNative(node); } \
  487.   NS_IMETHOD Normalize(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Normalize(); } \
  488.   NS_IMETHOD Create(PRUint32 type, PRUint32 permissions) { return !_to ? NS_ERROR_NULL_POINTER : _to->Create(type, permissions); } \
  489.   NS_IMETHOD GetLeafName(nsAString & aLeafName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLeafName(aLeafName); } \
  490.   NS_IMETHOD SetLeafName(const nsAString & aLeafName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLeafName(aLeafName); } \
  491.   NS_IMETHOD GetNativeLeafName(nsACString & aNativeLeafName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNativeLeafName(aNativeLeafName); } \
  492.   NS_IMETHOD SetNativeLeafName(const nsACString & aNativeLeafName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNativeLeafName(aNativeLeafName); } \
  493.   NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString & newName) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyTo(newParentDir, newName); } \
  494.   NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString & newName) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyToNative(newParentDir, newName); } \
  495.   NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString & newName) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyToFollowingLinks(newParentDir, newName); } \
  496.   NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString & newName) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyToFollowingLinksNative(newParentDir, newName); } \
  497.   NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString & newName) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveTo(newParentDir, newName); } \
  498.   NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString & newName) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveToNative(newParentDir, newName); } \
  499.   NS_IMETHOD Remove(PRBool recursive) { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(recursive); } \
  500.   NS_IMETHOD GetPermissions(PRUint32 *aPermissions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPermissions(aPermissions); } \
  501.   NS_IMETHOD SetPermissions(PRUint32 aPermissions) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPermissions(aPermissions); } \
  502.   NS_IMETHOD GetPermissionsOfLink(PRUint32 *aPermissionsOfLink) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPermissionsOfLink(aPermissionsOfLink); } \
  503.   NS_IMETHOD SetPermissionsOfLink(PRUint32 aPermissionsOfLink) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPermissionsOfLink(aPermissionsOfLink); } \
  504.   NS_IMETHOD GetLastModifiedTime(PRInt64 *aLastModifiedTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastModifiedTime(aLastModifiedTime); } \
  505.   NS_IMETHOD SetLastModifiedTime(PRInt64 aLastModifiedTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastModifiedTime(aLastModifiedTime); } \
  506.   NS_IMETHOD GetLastModifiedTimeOfLink(PRInt64 *aLastModifiedTimeOfLink) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  507.   NS_IMETHOD SetLastModifiedTimeOfLink(PRInt64 aLastModifiedTimeOfLink) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  508.   NS_IMETHOD GetFileSize(PRInt64 *aFileSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileSize(aFileSize); } \
  509.   NS_IMETHOD SetFileSize(PRInt64 aFileSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFileSize(aFileSize); } \
  510.   NS_IMETHOD GetFileSizeOfLink(PRInt64 *aFileSizeOfLink) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileSizeOfLink(aFileSizeOfLink); } \
  511.   NS_IMETHOD GetTarget(nsAString & aTarget) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTarget(aTarget); } \
  512.   NS_IMETHOD GetNativeTarget(nsACString & aNativeTarget) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNativeTarget(aNativeTarget); } \
  513.   NS_IMETHOD GetPath(nsAString & aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  514.   NS_IMETHOD GetNativePath(nsACString & aNativePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNativePath(aNativePath); } \
  515.   NS_IMETHOD Exists(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Exists(_retval); } \
  516.   NS_IMETHOD IsWritable(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsWritable(_retval); } \
  517.   NS_IMETHOD IsReadable(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsReadable(_retval); } \
  518.   NS_IMETHOD IsExecutable(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsExecutable(_retval); } \
  519.   NS_IMETHOD IsHidden(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsHidden(_retval); } \
  520.   NS_IMETHOD IsDirectory(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsDirectory(_retval); } \
  521.   NS_IMETHOD IsFile(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsFile(_retval); } \
  522.   NS_IMETHOD IsSymlink(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSymlink(_retval); } \
  523.   NS_IMETHOD IsSpecial(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSpecial(_retval); } \
  524.   NS_IMETHOD CreateUnique(PRUint32 type, PRUint32 permissions) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateUnique(type, permissions); } \
  525.   NS_IMETHOD Clone(nsIFile **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  526.   NS_IMETHOD Equals(nsIFile *inFile, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Equals(inFile, _retval); } \
  527.   NS_IMETHOD Contains(nsIFile *inFile, PRBool recur, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Contains(inFile, recur, _retval); } \
  528.   NS_IMETHOD GetParent(nsIFile * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  529.   NS_IMETHOD GetDirectoryEntries(nsISimpleEnumerator * *aDirectoryEntries) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDirectoryEntries(aDirectoryEntries); } 
  530.  
  531. #if 0
  532. /* Use the code below as a template for the implementation class for this interface. */
  533.  
  534. /* Header file */
  535. class nsFile : public nsIFile
  536. {
  537. public:
  538.   NS_DECL_ISUPPORTS
  539.   NS_DECL_NSIFILE
  540.  
  541.   nsFile();
  542.  
  543. private:
  544.   ~nsFile();
  545.  
  546. protected:
  547.   /* additional members */
  548. };
  549.  
  550. /* Implementation file */
  551. NS_IMPL_ISUPPORTS1(nsFile, nsIFile)
  552.  
  553. nsFile::nsFile()
  554. {
  555.   /* member initializers and constructor code */
  556. }
  557.  
  558. nsFile::~nsFile()
  559. {
  560.   /* destructor code */
  561. }
  562.  
  563. /* void append (in AString node); */
  564. NS_IMETHODIMP nsFile::Append(const nsAString & node)
  565. {
  566.     return NS_ERROR_NOT_IMPLEMENTED;
  567. }
  568.  
  569. /* [noscript] void appendNative (in ACString node); */
  570. NS_IMETHODIMP nsFile::AppendNative(const nsACString & node)
  571. {
  572.     return NS_ERROR_NOT_IMPLEMENTED;
  573. }
  574.  
  575. /* void normalize (); */
  576. NS_IMETHODIMP nsFile::Normalize()
  577. {
  578.     return NS_ERROR_NOT_IMPLEMENTED;
  579. }
  580.  
  581. /* void create (in unsigned long type, in unsigned long permissions); */
  582. NS_IMETHODIMP nsFile::Create(PRUint32 type, PRUint32 permissions)
  583. {
  584.     return NS_ERROR_NOT_IMPLEMENTED;
  585. }
  586.  
  587. /* attribute AString leafName; */
  588. NS_IMETHODIMP nsFile::GetLeafName(nsAString & aLeafName)
  589. {
  590.     return NS_ERROR_NOT_IMPLEMENTED;
  591. }
  592. NS_IMETHODIMP nsFile::SetLeafName(const nsAString & aLeafName)
  593. {
  594.     return NS_ERROR_NOT_IMPLEMENTED;
  595. }
  596.  
  597. /* [noscript] attribute ACString nativeLeafName; */
  598. NS_IMETHODIMP nsFile::GetNativeLeafName(nsACString & aNativeLeafName)
  599. {
  600.     return NS_ERROR_NOT_IMPLEMENTED;
  601. }
  602. NS_IMETHODIMP nsFile::SetNativeLeafName(const nsACString & aNativeLeafName)
  603. {
  604.     return NS_ERROR_NOT_IMPLEMENTED;
  605. }
  606.  
  607. /* void copyTo (in nsIFile newParentDir, in AString newName); */
  608. NS_IMETHODIMP nsFile::CopyTo(nsIFile *newParentDir, const nsAString & newName)
  609. {
  610.     return NS_ERROR_NOT_IMPLEMENTED;
  611. }
  612.  
  613. /* [noscript] void CopyToNative (in nsIFile newParentDir, in ACString newName); */
  614. NS_IMETHODIMP nsFile::CopyToNative(nsIFile *newParentDir, const nsACString & newName)
  615. {
  616.     return NS_ERROR_NOT_IMPLEMENTED;
  617. }
  618.  
  619. /* void copyToFollowingLinks (in nsIFile newParentDir, in AString newName); */
  620. NS_IMETHODIMP nsFile::CopyToFollowingLinks(nsIFile *newParentDir, const nsAString & newName)
  621. {
  622.     return NS_ERROR_NOT_IMPLEMENTED;
  623. }
  624.  
  625. /* [noscript] void copyToFollowingLinksNative (in nsIFile newParentDir, in ACString newName); */
  626. NS_IMETHODIMP nsFile::CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString & newName)
  627. {
  628.     return NS_ERROR_NOT_IMPLEMENTED;
  629. }
  630.  
  631. /* void moveTo (in nsIFile newParentDir, in AString newName); */
  632. NS_IMETHODIMP nsFile::MoveTo(nsIFile *newParentDir, const nsAString & newName)
  633. {
  634.     return NS_ERROR_NOT_IMPLEMENTED;
  635. }
  636.  
  637. /* [noscript] void moveToNative (in nsIFile newParentDir, in ACString newName); */
  638. NS_IMETHODIMP nsFile::MoveToNative(nsIFile *newParentDir, const nsACString & newName)
  639. {
  640.     return NS_ERROR_NOT_IMPLEMENTED;
  641. }
  642.  
  643. /* void remove (in boolean recursive); */
  644. NS_IMETHODIMP nsFile::Remove(PRBool recursive)
  645. {
  646.     return NS_ERROR_NOT_IMPLEMENTED;
  647. }
  648.  
  649. /* attribute unsigned long permissions; */
  650. NS_IMETHODIMP nsFile::GetPermissions(PRUint32 *aPermissions)
  651. {
  652.     return NS_ERROR_NOT_IMPLEMENTED;
  653. }
  654. NS_IMETHODIMP nsFile::SetPermissions(PRUint32 aPermissions)
  655. {
  656.     return NS_ERROR_NOT_IMPLEMENTED;
  657. }
  658.  
  659. /* attribute unsigned long permissionsOfLink; */
  660. NS_IMETHODIMP nsFile::GetPermissionsOfLink(PRUint32 *aPermissionsOfLink)
  661. {
  662.     return NS_ERROR_NOT_IMPLEMENTED;
  663. }
  664. NS_IMETHODIMP nsFile::SetPermissionsOfLink(PRUint32 aPermissionsOfLink)
  665. {
  666.     return NS_ERROR_NOT_IMPLEMENTED;
  667. }
  668.  
  669. /* attribute PRInt64 lastModifiedTime; */
  670. NS_IMETHODIMP nsFile::GetLastModifiedTime(PRInt64 *aLastModifiedTime)
  671. {
  672.     return NS_ERROR_NOT_IMPLEMENTED;
  673. }
  674. NS_IMETHODIMP nsFile::SetLastModifiedTime(PRInt64 aLastModifiedTime)
  675. {
  676.     return NS_ERROR_NOT_IMPLEMENTED;
  677. }
  678.  
  679. /* attribute PRInt64 lastModifiedTimeOfLink; */
  680. NS_IMETHODIMP nsFile::GetLastModifiedTimeOfLink(PRInt64 *aLastModifiedTimeOfLink)
  681. {
  682.     return NS_ERROR_NOT_IMPLEMENTED;
  683. }
  684. NS_IMETHODIMP nsFile::SetLastModifiedTimeOfLink(PRInt64 aLastModifiedTimeOfLink)
  685. {
  686.     return NS_ERROR_NOT_IMPLEMENTED;
  687. }
  688.  
  689. /* attribute PRInt64 fileSize; */
  690. NS_IMETHODIMP nsFile::GetFileSize(PRInt64 *aFileSize)
  691. {
  692.     return NS_ERROR_NOT_IMPLEMENTED;
  693. }
  694. NS_IMETHODIMP nsFile::SetFileSize(PRInt64 aFileSize)
  695. {
  696.     return NS_ERROR_NOT_IMPLEMENTED;
  697. }
  698.  
  699. /* readonly attribute PRInt64 fileSizeOfLink; */
  700. NS_IMETHODIMP nsFile::GetFileSizeOfLink(PRInt64 *aFileSizeOfLink)
  701. {
  702.     return NS_ERROR_NOT_IMPLEMENTED;
  703. }
  704.  
  705. /* readonly attribute AString target; */
  706. NS_IMETHODIMP nsFile::GetTarget(nsAString & aTarget)
  707. {
  708.     return NS_ERROR_NOT_IMPLEMENTED;
  709. }
  710.  
  711. /* [noscript] readonly attribute ACString nativeTarget; */
  712. NS_IMETHODIMP nsFile::GetNativeTarget(nsACString & aNativeTarget)
  713. {
  714.     return NS_ERROR_NOT_IMPLEMENTED;
  715. }
  716.  
  717. /* readonly attribute AString path; */
  718. NS_IMETHODIMP nsFile::GetPath(nsAString & aPath)
  719. {
  720.     return NS_ERROR_NOT_IMPLEMENTED;
  721. }
  722.  
  723. /* [noscript] readonly attribute ACString nativePath; */
  724. NS_IMETHODIMP nsFile::GetNativePath(nsACString & aNativePath)
  725. {
  726.     return NS_ERROR_NOT_IMPLEMENTED;
  727. }
  728.  
  729. /* boolean exists (); */
  730. NS_IMETHODIMP nsFile::Exists(PRBool *_retval)
  731. {
  732.     return NS_ERROR_NOT_IMPLEMENTED;
  733. }
  734.  
  735. /* boolean isWritable (); */
  736. NS_IMETHODIMP nsFile::IsWritable(PRBool *_retval)
  737. {
  738.     return NS_ERROR_NOT_IMPLEMENTED;
  739. }
  740.  
  741. /* boolean isReadable (); */
  742. NS_IMETHODIMP nsFile::IsReadable(PRBool *_retval)
  743. {
  744.     return NS_ERROR_NOT_IMPLEMENTED;
  745. }
  746.  
  747. /* boolean isExecutable (); */
  748. NS_IMETHODIMP nsFile::IsExecutable(PRBool *_retval)
  749. {
  750.     return NS_ERROR_NOT_IMPLEMENTED;
  751. }
  752.  
  753. /* boolean isHidden (); */
  754. NS_IMETHODIMP nsFile::IsHidden(PRBool *_retval)
  755. {
  756.     return NS_ERROR_NOT_IMPLEMENTED;
  757. }
  758.  
  759. /* boolean isDirectory (); */
  760. NS_IMETHODIMP nsFile::IsDirectory(PRBool *_retval)
  761. {
  762.     return NS_ERROR_NOT_IMPLEMENTED;
  763. }
  764.  
  765. /* boolean isFile (); */
  766. NS_IMETHODIMP nsFile::IsFile(PRBool *_retval)
  767. {
  768.     return NS_ERROR_NOT_IMPLEMENTED;
  769. }
  770.  
  771. /* boolean isSymlink (); */
  772. NS_IMETHODIMP nsFile::IsSymlink(PRBool *_retval)
  773. {
  774.     return NS_ERROR_NOT_IMPLEMENTED;
  775. }
  776.  
  777. /* boolean isSpecial (); */
  778. NS_IMETHODIMP nsFile::IsSpecial(PRBool *_retval)
  779. {
  780.     return NS_ERROR_NOT_IMPLEMENTED;
  781. }
  782.  
  783. /* void createUnique (in unsigned long type, in unsigned long permissions); */
  784. NS_IMETHODIMP nsFile::CreateUnique(PRUint32 type, PRUint32 permissions)
  785. {
  786.     return NS_ERROR_NOT_IMPLEMENTED;
  787. }
  788.  
  789. /* nsIFile clone (); */
  790. NS_IMETHODIMP nsFile::Clone(nsIFile **_retval)
  791. {
  792.     return NS_ERROR_NOT_IMPLEMENTED;
  793. }
  794.  
  795. /* boolean equals (in nsIFile inFile); */
  796. NS_IMETHODIMP nsFile::Equals(nsIFile *inFile, PRBool *_retval)
  797. {
  798.     return NS_ERROR_NOT_IMPLEMENTED;
  799. }
  800.  
  801. /* boolean contains (in nsIFile inFile, in boolean recur); */
  802. NS_IMETHODIMP nsFile::Contains(nsIFile *inFile, PRBool recur, PRBool *_retval)
  803. {
  804.     return NS_ERROR_NOT_IMPLEMENTED;
  805. }
  806.  
  807. /* readonly attribute nsIFile parent; */
  808. NS_IMETHODIMP nsFile::GetParent(nsIFile * *aParent)
  809. {
  810.     return NS_ERROR_NOT_IMPLEMENTED;
  811. }
  812.  
  813. /* readonly attribute nsISimpleEnumerator directoryEntries; */
  814. NS_IMETHODIMP nsFile::GetDirectoryEntries(nsISimpleEnumerator * *aDirectoryEntries)
  815. {
  816.     return NS_ERROR_NOT_IMPLEMENTED;
  817. }
  818.  
  819. /* End of implementation class template. */
  820. #endif
  821.  
  822. #ifdef MOZILLA_INTERNAL_API
  823. #include "nsDirectoryServiceUtils.h"
  824. #endif
  825.  
  826. #endif /* __gen_nsIFile_h__ */
  827.